package com.jdls.day10.work;

import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

/**
 * @author 嘉德罗斯
 * @date 2021/7/28
 */
public class TestChine {
    public static void main(String[] args) {
        //使用流：
        ArrayList<String> s = new ArrayList<>();
        ArrayList<String> shi = new ArrayList<>();
        ArrayList<String> qu = new ArrayList<>();
        ArrayList<String> tb = new ArrayList<>();
        Demo(s, shi, qu, tb);
        Demo1(s, shi, qu, tb);
        Demo2(s, shi, qu, tb);
        Demo3(s);
        //4、将所有的特殊省份（自治区直辖市特别行政区）提取出来并放到新集合中
        Stream<String> a1 = Stream.concat(shi.stream(), qu.stream());
        Stream<String> a2 = Stream.concat(tb.stream(),a1);
        List<String> arr = a2.collect(Collectors.toList());
        for (String s1 : arr) {
            System.out.println(s1);
        }
    }

    private static void Demo3(ArrayList<String> s) {
        //3、打印名字中包含方位名词的普通省份（非自治区直辖市特别行政区）的名字
        long l = s.stream().filter(a -> {
            for (int i = 0; i < a.length(); i++) {
                if (a.charAt(i) == '东' || a.charAt(i) == '北' || a.charAt(i) == '西' || a.charAt(i) == '南') {
                    return true;
                }
            }
            return false;
        }).count();
        System.out.println("普通省份方位名词出现的次数为"+l+"次");
    }

    private static void Demo2(ArrayList<String> s, ArrayList<String> shi, ArrayList<String> qu, ArrayList<String> tb) {
        //2、统计名字中包含方位名词的省份（东西南北）的个数
        Stream<String> concat1 = Stream.concat(s.stream(), shi.stream());
        Stream<String> concat2 = Stream.concat(qu.stream(), tb.stream());
        Stream<String> concat3 = Stream.concat(concat1, concat2);
        long l = concat3.filter(a -> {
            for (int i = 0; i < a.length(); i++) {
                if (a.charAt(i) == '东' || a.charAt(i) == '北' || a.charAt(i) == '西' || a.charAt(i) == '南') {
                    return true;
                }
            }
            return false;
        }).count();
        System.out.println("带方位名词的省一共出现了"+l+"次");
    }

    private static void Demo1(ArrayList<String> s, ArrayList<String> shi, ArrayList<String> qu, ArrayList<String> tb) {
        //1、统计三个字的省份的个数
        long a = s.stream().filter(A -> A.length() == 3).count();
        long b = shi.stream().filter(B -> B.length() == 3).count();
        long c = qu.stream().filter(C -> C.length() == 3).count();
        long d = tb.stream().filter(D -> D.length() == 3).count();
        System.out.println("三个字的省一共出现了"+(a+b+c+d)+"次");
    }

    private static void Demo(ArrayList<String> s, ArrayList<String> shi, ArrayList<String> qu, ArrayList<String> tb) {
        String sh = "河北省、山西省、吉林省、辽宁省、黑龙江省、陕西省、甘肃省、青海省、山东省、福建省、浙江省、台湾省、河南省、湖北省、湖南省、江西省、江苏省、安徽省、广东省、海南省、四川省、贵州省、云南省";
        String[] arr = sh.split("、");
        for (int i = 0; i < arr.length; i++) {
            s.add(arr[i]);
        }
        shi.add("北京市");
        shi.add("天津市");
        shi.add("上海市");
        shi.add("重庆市");
        qu.add("内蒙古自治区");
        qu.add("新疆维吾尔自治区");
        qu.add("宁夏回族治区");
        qu.add("广西壮族自治区");
        qu.add("西藏自治区");
        tb.add("香港特别行政区");
        tb.add("澳门特别行政区");
    }
}
